package com.demo.user;

import com.demo.common.model.User;
import com.demo.common.util.StringUtil;
import com.jfinal.aop.Before;
import com.jfinal.aop.Inject;
import com.jfinal.core.Controller;
import com.jfinal.kit.Kv;
import com.jfinal.kit.StrKit;

/**
 * 本 com.demo 仅表达最为粗浅的 jfinal 用法，更为有价值的实用的企业级用法
 * 详见 JFinal 俱乐部: http://jfinal.com/club
 * 
 * 所有 sql 与业务逻辑写在 Service 中，不要放在 Model 中，更不
 * 要放在 Controller 中，养成好习惯，有利于大型项目的开发与维护
 */
@Before(UserInterceptor.class)
public class UserController extends Controller {
	
	@Inject
	UserService service;

	//加载管理员页面
	public void index() {
		Kv cond=Kv.create();
		if(StrKit.notBlank(getPara("name"))){
			cond.set("name",getPara("name"));
		}
		setAttr("userPage", service.paginate(getParaToInt(0, 1), 10,Kv.by("cond",cond)));
		render("user.html");
	}

	//加载添加管理远页面
	public void add() {
	}

	/**
	 * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中，
	 * 并要对数据进正确性进行验证，在此仅为了偷懒
	 */
	//添加管理员
	@Before(UserValidator.class)
	public void save() {
		User user=getBean(User.class);
		user.setCreatedate(StringUtil.strToTimeStamp());
		user.setUpdatedate(StringUtil.strToTimeStamp());
		user.save();
		redirect("/user");
	}

	//加载编辑管理员页面
	public void edit() {
		setAttr("user", service.findById(getParaToInt()));
	}
	
	/**
	 * save 与 update 的业务逻辑在实际应用中也应该放在 serivce 之中，
	 * 并要对数据进正确性进行验证，在此仅为了偷懒
	 */
	//编辑管理员
	@Before(UserValidator.class)
	public void update() {
		User user=getBean(User.class);
		user.setUpdatedate(StringUtil.strToTimeStamp());
		user.update();
		redirect("/user");
	}

	//删除管理员
	public void delete() {
		service.deleteById(getParaToInt());
		redirect("/user");
	}

}


